/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package controller;

import java.util.ArrayList;
import javax.swing.table.DefaultTableModel;
import model.TabellenEintrag;

/**
 *
 * @author Max
 */
public class TabellenSaver {
    
    String filePath;
    DefaultTableModel model;
    
    
    public TabellenSaver(DefaultTableModel model, String filePath) {
        this.model = model;
        this.filePath = filePath;
    }
    
    public TabellenSaver(DefaultTableModel model) {
        this(model, null);
    }
    
    public ArrayList<TabellenEintrag> getListe() {
        ArrayList<TabellenEintrag> liste = new ArrayList<>();
        String[] eintraege;
        // Uebernehmen der Spaltennamen fuer die CSV Datei
        eintraege = new String[model.getColumnCount()];
        for (int i=0; i < model.getColumnCount(); i++) {
            if (model.getColumnName(i) != null || model.getColumnName(i).length() != 0) {
            eintraege[i]=model.getColumnName(i);
            }
        }
        TabellenEintrag eintrag = new TabellenEintrag(eintraege);
        liste.add(eintrag);
        // Uebernehmen der ZeilenDaten
        for (int i=0; i < model.getRowCount(); i++) {
            eintraege = new String[model.getColumnCount()];
            for (int j=0; j < model.getColumnCount(); j++) {
                if (model.getValueAt(i, j) != null) {
                    String tempVar = (String) model.getValueAt(i, j);
                    if (tempVar.length() != 0) {
                        eintraege[j] = (String) model.getValueAt(i, j);
                    }
                }              
            }
            liste.add(new TabellenEintrag(eintraege));
        }
        return liste;
    }
    
    public ArrayList<TabellenEintrag> getListe(String[][] daten) {
        ArrayList<TabellenEintrag> liste = new ArrayList<>();
        for (int i=0; i < daten.length; i++) {
            TabellenEintrag eintrag = new TabellenEintrag(daten[i]);
            liste.add(eintrag);
        }
        return liste;
    }
    
    public void write() {
        CSVSaver csvs = new CSVSaver(getListe(), filePath);
        csvs.write();
    }
    
    
    
}
